package br.com.foxinline.manager.pesquisar;

import br.com.foxinline.modelo.Distribuicao;
import br.com.foxinline.modelo.DistribuicaoItem;
import br.com.foxinline.modelo.Usuario;
import br.com.foxinline.servico.DistribuicaoServico;
import br.com.foxinline.servico.UsuarioServico;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import javax.annotation.PostConstruct;
import javax.ejb.EJB;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.ViewScoped;
import javax.faces.context.FacesContext;

/**
 *
 * @author cadomeireles
 */
@ManagedBean
@ViewScoped
public class ManagerPesquisarDistribuicao implements Serializable {

    @EJB
    UsuarioServico usuarioServico;
    @EJB
    DistribuicaoServico distribuicaoServico;
    
    private Distribuicao distribuicao;
    private Distribuicao distribuicaoVisualizar;
    private List<Distribuicao> distribuicoes;
    private List<DistribuicaoItem> distribuicaoItens;

    private String visualizarId;
    
    @PostConstruct
    public void init() {
        instanciar();
        delegar();
    }

    private void delegar() {
        Map<String, String> parametros = FacesContext.getCurrentInstance().getExternalContext().getRequestParameterMap();
        this.visualizarId = parametros.get("distribuicaoId");
        
        if (this.visualizarId != null) {
            this.distribuicaoVisualizar = distribuicaoServico.pesquisar(Long.parseLong(this.visualizarId));
            this.distribuicaoItens = distribuicaoServico.obterItens(this.distribuicaoVisualizar);
        }
    }

    private void instanciar() {
        this.distribuicao = new Distribuicao();
        this.distribuicao.setDataDistribuicao(null);
        this.distribuicoes = new ArrayList<Distribuicao>();
        this.distribuicaoItens = new ArrayList<DistribuicaoItem>();
    }

    public List<Usuario> autocompletarUsuario(String query) {
        return usuarioServico.autocompletar(query);
    }
    
    public void pesquisar() {
        this.distribuicoes = distribuicaoServico.pesquisar(this.distribuicao);
    }
    
    public void limpar() {
        instanciar();
    }
    
    public Distribuicao getDistribuicao() {
        return distribuicao;
    }

    public void setDistribuicao(Distribuicao distribuicao) {
        this.distribuicao = distribuicao;
    }

    public List<Distribuicao> getDistribuicoes() {
        return distribuicoes;
    }

    public void setDistribuicoes(List<Distribuicao> distribuicoes) {
        this.distribuicoes = distribuicoes;
    }

    public Distribuicao getDistribuicaoVisualizar() {
        return distribuicaoVisualizar;
    }

    public void setDistribuicaoVisualizar(Distribuicao distribuicaoVisualizar) {
        this.distribuicaoVisualizar = distribuicaoVisualizar;
    }

    public List<DistribuicaoItem> getDistribuicaoItens() {
        return distribuicaoItens;
    }

    public void setDistribuicaoItens(List<DistribuicaoItem> distribuicaoItens) {
        this.distribuicaoItens = distribuicaoItens;
    }

}
